
package com.hd2tecnologia.modeloBanco;

import com.hd2tecnologia.entidades.Fornecedor;
import com.hd2tecnologia.banco.AcessoBanco;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Dulcyelliton Silva
 */
public class FornecedorBD {

    private PreparedStatement ps;
    private Connection con;
    private ResultSet rs;
    private AcessoBanco acessoBD = new AcessoBanco();
    private String consultaFornecedor = "select * from fornecedor";
    private String consultaFornecedorNome = "select * from fornecedor where fornecedor.nome like ?";
    private String incluiFornecedor = "insert into fornecedor (nome, endereco, bairro, cidade, uf, cep, telefone, email) values(?, ?, ?, ?, ?, ?, ?, ?)";
    private String alteraFornecedor = "update fornecedor set nome = ?, endereco = ?, bairro = ?, cidade = ?, uf = ?, cep = ?, telefone = ?, email = ? where fornecedor.id = ?";
    private String excluiFornecedor = "delete from fornecedor where fornecedor.id = ?";

    public List<Fornecedor> consultaFornecedor() {
        List<Fornecedor> listaFornecedores = new ArrayList<Fornecedor>();
        Fornecedor fornecedor;
        try {
            con = acessoBD.conectar();
            ps = con.prepareStatement(consultaFornecedor);
            rs = ps.executeQuery();
            while (rs.next()) {
                fornecedor = new Fornecedor();
                fornecedor.setId(rs.getInt("id"));
                fornecedor.setNome(rs.getString("nome"));
                fornecedor.setEndereco(rs.getString("endereco"));
                fornecedor.setBairro(rs.getString("bairro"));
                fornecedor.setCidade(rs.getString("cidade"));
                fornecedor.setCep(rs.getString("cep"));
                fornecedor.setUf(rs.getString("uf"));
                fornecedor.setTelefone(rs.getString("telefone"));
                fornecedor.setEmail(rs.getString("email"));

                listaFornecedores.add(fornecedor);
            }
            acessoBD.desconectar();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listaFornecedores;
    }

    public List<Fornecedor> consultaFornecedor(String nome) {
        List<Fornecedor> listaFornecedores = new ArrayList<Fornecedor>();
        Fornecedor fornecedor;
        try {
            con = acessoBD.conectar();
            ps = con.prepareStatement(consultaFornecedorNome);
            nome = "%" + nome + "%";
            ps.setString(1, nome);
            rs = ps.executeQuery();
            while (rs.next()) {
                fornecedor = new Fornecedor();
                fornecedor.setId(rs.getInt("id"));
                fornecedor.setNome(rs.getString("nome"));
                fornecedor.setEndereco(rs.getString("endereco"));
                fornecedor.setBairro(rs.getString("bairro"));
                fornecedor.setCidade(rs.getString("cidade"));
                fornecedor.setCep(rs.getString("cep"));
                fornecedor.setTelefone(rs.getString("telefone"));
                fornecedor.setEmail(rs.getString("email"));

                listaFornecedores.add(fornecedor);
            }
            acessoBD.desconectar();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return listaFornecedores;
    }

    public boolean incluiFornecedor(Fornecedor fornecedor) {
        try {
            con = acessoBD.conectar();
            ps = con.prepareStatement(incluiFornecedor);

            ps.setString(1, fornecedor.getNome());
            ps.setString(2, fornecedor.getEndereco());
            ps.setString(3, fornecedor.getBairro());
            ps.setString(4, fornecedor.getCidade());
            ps.setString(5, fornecedor.getUf());
            ps.setString(6, fornecedor.getCep());
            ps.setString(7, fornecedor.getTelefone());
            ps.setString(8, fornecedor.getEmail());

            ps.executeUpdate();

            acessoBD.desconectar();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    public boolean alteraFornecedor(Fornecedor fornecedor) {
        try {
            con = acessoBD.conectar();
            ps = con.prepareStatement(alteraFornecedor);

            ps.setString(1, fornecedor.getNome());
            ps.setString(2, fornecedor.getEndereco());
            ps.setString(3, fornecedor.getBairro());
            ps.setString(4, fornecedor.getCidade());
            ps.setString(5, fornecedor.getUf());
            ps.setString(6, fornecedor.getCep());
            ps.setString(7, fornecedor.getTelefone());
            ps.setString(8, fornecedor.getEmail());
            ps.setInt(9, fornecedor.getId());

            ps.executeUpdate();

            acessoBD.desconectar();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    public boolean excluiFornecedor(Fornecedor fornecedor) {
        try {
            con = acessoBD.conectar();
            ps = con.prepareStatement(excluiFornecedor);

            ps.setInt(1, fornecedor.getId());

            ps.executeUpdate();

            acessoBD.desconectar();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }

        return false;
    }
}
